[tool.poetry]
name = "semantic-kernel"
version = "1.0.1"
description = "Semantic Kernel Python SDK"
authors = ["Microsoft <SK-Support@microsoft.com>"]
readme = "pip/README.md"
packages = [{include = "semantic_kernel"}]

[tool.poetry.dependencies]
python = "^3.10,<3.13"
aiohttp = "^3.8"
numpy = [
    { version = ">=1.25", python = "<3.12" },
    { version = ">=1.26", python = ">=3.12" },
]
scipy = [
    { version = ">=1.5.0", python = "<3.12" },
    { version = ">=1.12.0", python = ">=3.12" }
]
grpcio = [
    { version = ">=1.50.0", python = "<3.12" },
    { version = ">=1.60.0", python = ">=3.12" }
]
openai = ">=1.0"
regex = "^2023.6.3"
openapi_core = ">=0.18,<0.20"
prance = "^23.6.21.0"
pydantic = "^2"
pydantic-settings = "^2.2.1"
motor = "^3.3.2"
defusedxml = "^0.7.1"
pybars4 = "^0.9.13"
jinja2 = "^3.1.3"
nest-asyncio = "^1.6.0"

# Optional dependencies
ipykernel = { version = "^6.21.1", optional = true}
google-generativeai = { version = ">=0.1", markers = "python_version >= '3.9'", optional = true}
grpcio-status = { version = "^1.53.0", markers = "python_version >= '3.9'", optional = true}
transformers = { version = "^4.28.1", optional = true}
sentence-transformers = { version = "^2.2.2", optional = true}
torch = { version = "^2.2.0", optional = true}
qdrant-client = { version = '^1.9', optional = true}
chromadb = { version = "^0.4.13", optional = true}
pymilvus = { version = ">=2.3,<2.3.8", optional = true}
milvus = { version = ">=2.3,<2.3.8", markers = 'sys_platform != "win32"', optional = true}
weaviate-client = { version = ">=3.18,<5.0", optional = true}
pinecone-client = { version = ">=3.0.0", optional = true}
psycopg = { version="^3.1.9", extras=["binary","pool"], optional = true}
redis = { version = "^4.6.0", optional = true}
azure-search-documents = {version = "11.6.0b4", allow-prereleases = true, optional = true}
azure-core = { version = "^1.28.0", optional = true}
azure-identity = { version = "^1.13.0", optional = true}
azure-cosmos = { version = "^4.7.0", optional = true}
usearch = { version = "^2.9", optional = true}
pyarrow = { version = ">=12.0.1,<16.0.0", optional = true}

# Groups are for development only (installed through Poetry)
[tool.poetry.group.dev.dependencies]
pre-commit = "^3.5"
black = "^24.2.0"
ruff = ">=0.3.2,<0.5.0"
ipykernel = "^6.29.3"
pytest = "^8.1.1"
pytest-asyncio = "^0.23.6"
snoop = "^0.4.3"
pytest-cov = ">=5.0.0"
mypy = ">=1.9.0"
types-PyYAML = "^6.0.12.20240311"

[tool.poetry.group.unit-tests]
optional = true

[tool.poetry.group.unit-tests.dependencies]
google-generativeai = { version = ">=0.1,<0.4" }
azure-search-documents = {version = "11.6.0b4", allow-prereleases = true}
azure-core = "^1.28.0"
azure-cosmos = "^4.7.0"
transformers = "^4.28.1"
sentence-transformers = "^2.2.2"
torch = "^2.2.0"

[tool.poetry.group.tests]
optional = true

[tool.poetry.group.tests.dependencies]
google-generativeai = { version = ">=0.1,<0.4" }
grpcio-status = "^1.53.0"
transformers = "^4.28.1"
sentence-transformers = "^2.2.2"
torch = "^2.2.0"
qdrant-client = '^1.9'
chromadb = "^0.4.13"
pymilvus = ">=2.3,<2.3.8"
milvus = { version = ">=2.3,<2.3.8", markers = 'sys_platform != "win32"'}
weaviate-client = ">=3.18,<5.0"
pinecone-client = ">=3.0.0"
psycopg = { version="^3.1.9", extras=["binary","pool"]}
redis = "^4.6.0"
azure-search-documents = {version = "11.6.0b4", allow-prereleases = true}
azure-core = "^1.28.0"
azure-identity = "^1.13.0"
azure-cosmos = "^4.7.0"
usearch = "^2.9"
pyarrow = ">=12.0.1,<16.0.0"
msgraph-sdk = "^1.2.0"

# Extras are exposed to pip, this allows a user to easily add the right dependencies to their environment
[tool.poetry.extras]
google = ["google-generativeai", "grpcio-status"]
hugging_face = ["transformers", "sentence-transformers", "torch"]
qdrant = ["qdrant-client"]
chromadb = ["chromadb"]
milvus = ["pymilvus", "milvus"]
weaviate = ["weaviate-client"]
pinecone = ["pinecone-client"]
postgres = ["psycopg"]
redis = ["redis"]
azure = ["azure-search-documents", "azure-core", "azure-identity", "azure-cosmos", "msgraph-sdk"]
usearch = ["usearch", "pyarrow"]
notebooks = ["ipykernel"]
all = ["google-generativeai", "grpcio-status", "transformers", "sentence-transformers", "torch", "qdrant-client", "chromadb", "pymilvus", "milvus", "weaviate-client", "pinecone-client", "psycopg", "redis", "azure-search-documents", "azure-core", "azure-identity", "azure-cosmos", "usearch", "pyarrow", "ipykernel"]

[tool.ruff]
lint.select = ["E", "F", "I"]
line-length = 120

[tool.black]
line-length = 120

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
